{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Comprehensive Plotting How-To" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Logging hadn't been started.\n", "Activating auto-logging. Current session state plus future input saved.\n", "Filename : C:\\Users\\a-halakh\\.qcodes\\logs\\command_history.log\n", "Mode : append\n", "Output logging : True\n", "Raw input log : False\n", "Timestamping : True\n", "State : active\n", "Qcodes Logfile : C:\\Users\\a-halakh\\.qcodes\\logs\\200324-17004-qcodes.log\n", "False\n" ] } ], "source": [ "import qcodes as qc\n", "from qcodes.parameters import ManualParameter, Parameter\n", "\n", "import qcodes_loop.data.data_set\n", "import qcodes_loop.data.location\n", "from qcodes_loop.loops import Loop\n", "from qcodes_loop.plots.qcmatplotlib import MatPlot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotting data in QCoDeS can be done using either MatPlot or QTPlot, with matplotlib and pyqtgraph as backends, respectively. \n", "MatPlot and QTPlot tailor these plotting backends to QCoDeS, providing many features.\n", "For example, when plotting a DataArray in a DataSet, the corresponding ticks, labels, etc. are automatically added to the plot.\n", "Both MatPlot and QTPlot support live plotting while a measurement is running.\n", "\n", "One of the main differences between the two backends is that matplotlib is more strongly integrated with Jupyter Notebook, while pyqtgraph uses the PyQT GUI.\n", "For matplotlib, this has the advantage that plots can be displayed within a notebook (though it also has a gui).\n", "The advantage of pyqtgraph is that it can be easily embedded in PyQT GUI's.\n", "\n", "This guide aims to provide a detailed guide on how to use each of the two plotting tools." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "loc_provider = qcodes_loop.data.location.FormatLocation(fmt='data/{date}/#{counter}_{name}_{time}')\n", "qcodes_loop.data.data_set.DataSet.location_provider = loc_provider" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## MatPlot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The QCoDeS MatPlot relies on the matplotlib package, which is quite similar to Matlab's plotting tools.\n", "It integrates nicely with Jupyter notebook, and as a result, interactive plots can be displayed within a notebook using the following command:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple 1D sweep" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a first example, we perform a simple 1D sweep.\n", "We create two trivial parameters, one for measuring a value, and the other for sweeping the value of the measured parameter." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "p_measure = ManualParameter(name='measured_val')\n", "p_sweep = Parameter(name='sweep_val', set_cmd=p_measure.set)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we perform a measurement, and attach the `update` method of the `plot` object to the loop, resulting in live plotting.\n", "Note that the resulting plot automatically has the correct x values and labels." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Started at 2020-03-24 18:39:35\n", "DataSet:\n", " location = 'data/2020-03-24/#006_test_plotting_1D_18-39-35'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Measured | measured_val | measured_val | (21,)\n", "Finished at 2020-03-24 18:39:37\n" ] }, { "data": { "text/plain": [ "DataSet:\n", " location = 'data/2020-03-24/#006_test_plotting_1D_18-39-35'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Measured | measured_val | measured_val | (21,)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "loop = Loop(\n", " p_sweep.sweep(0, 20, step=1), delay=0.05).each(\n", " p_measure)\n", "data = loop.get_data_set(name='test_plotting_1D')\n", "\n", "# Create plot for measured data\n", "plot = MatPlot(data.measured_val)\n", "# Attach updating of plot to loop\n", "loop.with_bg_task(plot.update)\n", "\n", "loop.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Subplots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In a measurement, there is often more than a single parameter that is measured.\n", "MatPlot supports multiple subplots, and upon initialization it will create a subplot for each of the arguments it receives.\n", "\n", "Let us create a second parameter that, when measured, always returns the value 10." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "p_measure2 = ManualParameter(name='measured_val_2', initial_value=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the example below, three arguments are provided, resulting in three subplots.\n", "By default, subplots will be placed as columns on a single row, up to three columns.\n", "After this, a new row will be created (can be overridden in `MatPlot.max_subplot_columns`).\n", "\n", "Multiple DataArrays can also be plotted in a single subplot by passing them as a list in a single arg.\n", "As an example, notice how the first subplot shows multiple values." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Started at 2020-03-24 18:39:38\n", "DataSet:\n", " location = 'data/2020-03-24/#007_test_plotting_1D_2_18-39-38'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Measured | measured_val | measured_val | (21,)\n", " Measured | measured_val_2 | measured_val_2 | (21,)\n", "Finished at 2020-03-24 18:39:41\n" ] }, { "data": { "text/plain": [ "DataSet:\n", " location = 'data/2020-03-24/#007_test_plotting_1D_2_18-39-38'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Measured | measured_val | measured_val | (21,)\n", " Measured | measured_val_2 | measured_val_2 | (21,)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "loop = Loop(\n", " p_sweep.sweep(0, 20, step=1), delay=0.05).each(\n", " p_measure,\n", " p_measure2)\n", "data = loop.get_data_set(name='test_plotting_1D_2')\n", "\n", "# Create plot for measured data\n", "plot = MatPlot([data.measured_val, data.measured_val_2], data.measured_val, data.measured_val_2)\n", "# Attach updating of plot to loop\n", "loop.with_bg_task(plot.update)\n", "\n", "loop.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data arrays don't all have to be passed along during initialization of the MatPlot instance.\n", "We can access the subplots of the plot object as if the plot was a list (e.g. `plot[0]` would give you the first subplot).\n", "To illustrate this, the example below results in the same plot as above." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Started at 2020-03-24 18:39:42\n", "DataSet:\n", " location = 'data/2020-03-24/#008_test_plotting_1D_3_18-39-41'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Measured | measured_val | measured_val | (21,)\n", " Measured | measured_val_2 | measured_val_2 | (21,)\n", "Finished at 2020-03-24 18:39:45\n" ] }, { "data": { "text/plain": [ "DataSet:\n", " location = 'data/2020-03-24/#008_test_plotting_1D_3_18-39-41'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Measured | measured_val | measured_val | (21,)\n", " Measured | measured_val_2 | measured_val_2 | (21,)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "loop = Loop(\n", " p_sweep.sweep(0, 20, step=1), delay=0.05).each(\n", " p_measure,\n", " p_measure2)\n", "data = loop.get_data_set(name='test_plotting_1D_3')\n", "\n", "# Create plot for measured data\n", "plot = MatPlot(subplots=3)\n", "plot[0].add(data.measured_val)\n", "plot[0].add(data.measured_val_2)\n", "plot[1].add(data.measured_val)\n", "plot[2].add(data.measured_val_2)\n", "\n", "# Attach updating of plot to loop\n", "loop.with_bg_task(plot.update)\n", "\n", "loop.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we passed the kwarg `subplots=3` to specify that we need 3 subplots.\n", "The `subplots` kwarg can be either an int or a tuple.\n", "If it is an int, it will segment the value such that there are at most three columns.\n", "If a tuple is provided, its first element indicates the number of rows, and the second the number of columns.\n", "\n", "Furthermore, the size of the figure is automatically computed based on the number of subplots.\n", "This can be overridden by passing the kwarg `figsize=(x_length, y_length)` upon initialization.\n", "Additionally, `MatPlot.default_figsize` can be overridden to change the default computed figsize for a given subplot dimensionality." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2D Plots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As illustrated below, MatPlot can also plot two-dimensional data arrays.\n", "MatPlot automatically handles setting the appropriate x- and y-axes, and also adds a colorbar by default.\n", "Note that we can also plot the individual traces of a 2D array, as shown in the first subplot below.\n", "This is done by passing all the elements (=rows) of the 2D array as a single argument using the splat (*) operator." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "p_sweep2 = Parameter(name='sweep_val_2', set_cmd=p_measure2.set)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Started at 2020-03-24 18:39:47\n", "DataSet:\n", " location = 'data/2020-03-24/#009_test_plotting_2D_18-39-46'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Setpoint | sweep_val_2_set | sweep_val_2 | (21, 11)\n", " Measured | measured_val | measured_val | (21, 11)\n", "Finished at 2020-03-24 18:39:55\n" ] }, { "data": { "text/plain": [ "DataSet:\n", " location = 'data/2020-03-24/#009_test_plotting_2D_18-39-46'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Setpoint | sweep_val_2_set | sweep_val_2 | (21, 11)\n", " Measured | measured_val | measured_val | (21, 11)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "loop = Loop(\n", " p_sweep.sweep(0, 20, step=1), delay=0.05).loop(\n", " p_sweep2.sweep(0, 10, step=1), delay=0.01).each(\n", " p_measure)\n", "data = loop.get_data_set(name='test_plotting_2D')\n", "\n", "# Create plot for measured data\n", "plot = MatPlot([*data.measured_val], data.measured_val)\n", "# Attach updating of plot to loop\n", "loop.with_bg_task(plot.update)\n", "\n", "loop.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the example above, the colorbar can be accessed via `plot[1].qcodes_colorbar`.\n", "This can be useful when you want to modify the colorbar (e.g. change the color limits `clim`).\n", "\n", "Note that the above plot was updated every time an inner loop was completed. \n", "This is because the update method was attached to the outer loop.\n", "If you instead want it to update within an outer loop, you have to attach it to an inner loop: `loop[0].with_bg_task(plot.update)` (`loop[0]` is the first action of the outer loop, which is the inner loop)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interfacing with Matplotlib\n", "As Matplot is built directly on top of Matplotlib, you can use standard Matplotlib functions which are readily available online in Matplotlib documentation as well as StackOverflow and similar sites. Here, we first perform the same measurement and obtain the corresponding figure:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Started at 2020-03-24 18:39:57\n", "DataSet:\n", " location = 'data/2020-03-24/#010_test_plotting_2D_2_18-39-56'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Setpoint | sweep_val_2_set | sweep_val_2 | (21, 11)\n", " Measured | measured_val | measured_val | (21, 11)\n", "Finished at 2020-03-24 18:40:05\n" ] }, { "data": { "text/plain": [ "DataSet:\n", " location = 'data/2020-03-24/#010_test_plotting_2D_2_18-39-56'\n", " | | | \n", " Setpoint | sweep_val_set | sweep_val | (21,)\n", " Setpoint | sweep_val_2_set | sweep_val_2 | (21, 11)\n", " Measured | measured_val | measured_val | (21, 11)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "loop = Loop(\n", " p_sweep.sweep(0, 20, step=1), delay=0.05).loop(\n", " p_sweep2.sweep(0, 10, step=1), delay=0.01).each(\n", " p_measure)\n", "data = loop.get_data_set(name='test_plotting_2D_2')\n", "\n", "# Create plot for measured data\n", "plot = MatPlot([*data.measured_val], data.measured_val)\n", "# Attach updating of plot to loop\n", "loop.with_bg_task(plot.update)\n", "\n", "loop.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To use the matplotlib api, we need access to the matplotlib Figure and Axis objects. \n", "Each subplot has its correspond Axis object, which are grouped together into a single Figure object.\n", "A subplot Axis can be accessed via its index. As an example, we will modify the title of the first axis:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "ax = plot[0] # shorthand for plot.subplots[0]\n", "ax.set_title(\"My left subplot title\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that this returns the actual matplotlib Axis object.\n", "It does have the additional QCoDeS method `Axis.add()`, which allows easily adding of a QCoDeS DataArray. See http://matplotlib.org/api/axes_api.html for documentation of the Matplotlib Axes class.\n", "\n", "The Matplotlib Figure object can be accessed via the fig attribute on the QCoDeS Matplot object:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "fig = plot.fig\n", "fig.tight_layout();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See http://matplotlib.org/api/figure_api.html for documentation of the Matplotlib Figure class.\n", "\n", "Matplotlib also offers a second way to modify plots, namely pyplot.\n", "This can be imported via:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In pyplot, there is always an active axis and figure, similar to Matlab plotting.\n", "Every time a new plot is created, it will update the active axis and figure.\n", "The active Figure and Axis can be changed via `plt.scf(fig)` and `plt.sca(ax)`, respectively.\n", "\n", "As an example, the following code will change the title of the last-created plot (the right subplot of the previous figure):" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.title('My right subplot title');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See https://matplotlib.org/users/pyplot_tutorial.html for documentation on Pyplot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Event handling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since matplotlib is an interactive plotting tool, one can program actions that are dependent on events.\n", "There are many events, such as clicking on a plot, pressing a key, etc.\n", "\n", "As an example, we can attach a trivial function to occur when the plot object is closed. You can replace this with other functionality, such as stopping the loop." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def handle_close(event):\n", " print('Plot closed')\n", " \n", "plot = MatPlot()\n", "plot.fig.canvas.mpl_connect('close_event', handle_close);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On a related note, matplotlib also has widgets that can be added to plots, allowing additional interactivity with the dataset.\n", "An example would be adding a slider to show 2D plots of a 3D dataset (e.g. https://matplotlib.org/examples/widgets/slider_demo.html)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" }, "nbsphinx": { "timeout": 600 }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": "block", "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }